package com.service;

import com.bean.Announcement;
import com.utils.PageInfo;

import java.util.List;

public interface AnnouncementService {
    /**
     * 根据公告 ID 获取公告信息
     * @param announcementId 公告的唯一标识
     * @return 公告信息对象，如果未找到则返回 null
     */
    Announcement getAnnouncementById(Integer announcementId);

    /**
     * 分页模糊查询公告信息，可根据公告标题、内容或发布者用户名进行模糊匹配
     * @param keyword 模糊查询关键字，可匹配公告标题、内容或发布者用户名
     * @param pageNum 当前页码
     * @param pageSize 每页记录数
     * @return 包含分页信息的公告信息列表
     */
    PageInfo<Announcement> getAnnouncementsWithKeyword(String keyword, int pageNum, int pageSize);

    /**
     * 插入新的公告信息
     * @param announcement 公告信息对象
     * @return 插入操作是否成功，成功返回 true，失败返回 false
     */
    boolean insertAnnouncement(Announcement announcement);

    /**
     * 根据公告 ID 更新公告信息
     * @param announcement 公告信息对象，包含要更新的内容，announcementId 用于定位记录
     * @return 更新操作是否成功，成功返回 true，失败返回 false
     */
    boolean updateAnnouncement(Announcement announcement);

    /**
     * 根据公告 ID 删除公告信息
     * @param announcementId 公告的唯一标识
     * @return 删除操作是否成功，成功返回 true，失败返回 false
     */
    boolean deleteAnnouncementById(Integer announcementId);
}